package com.bcqn.utils;

import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONObject;
import com.bcqn.vo.FormData;

/**
 * MiniProgramUtil
 *
 * @author Kelly
 * @version v1.0
 * @date 2020/4/22 19:39
 */
public class MiniProgramUtil {
    /**
     * 微信API请求URL前缀
     */
    private static final String PRE_URL = "https://api.weixin.qq.com";

    /**
     * 获取access_token URL
     */
    private static final String GET_ACCESS_TOKEN_URL = PRE_URL + "/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";

    /**
     * 校验图片是否合规URL
     */
    private static final String IMG_SEC_CHECK_URL = PRE_URL + "/wxa/img_sec_check?access_token=ACCESS_TOKEN";

    /**
     * 校验图片/音频是否合规URL
     */
    private static final String MEDIA_SEC_CHECK_URL = PRE_URL + "/wxa/media_check_async?access_token=ACCESS_TOKEN";

    /**
     * 校验消息是否合规URL
     */
    private static final String MSG_SEC_CHECK_URL = PRE_URL + "/wxa/msg_sec_check?access_token=ACCESS_TOKEN";


    /**
     * 获取access_token
     * @param appid 小程序唯一凭证
     * @param secret 小程序唯一凭证密钥
     * @return
     */
    public static JSONObject getAccessToken(String appid, String secret){
        String url = GET_ACCESS_TOKEN_URL.replace("APPID", appid).replace("APPSECRET", secret);
        String result = HttpUtil.get(url);
        return JSONObject.parseObject(result);
    }


    /**
     * 校验一张图片是否含有违法违规内容。
     * @param accessToken 接口调用凭证
     * @param media 要检测的图片文件，格式支持PNG、JPEG、JPG、GIF，图片尺寸不超过 750px x 1334px
     * @return
     */
    public static JSONObject imgSecCheck(String accessToken, FormData media){
        String url = IMG_SEC_CHECK_URL.replace("ACCESS_TOKEN", accessToken);
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("media",media);
        String result = HttpUtil.post(url,jsonObject.toJSONString());
        return JSONObject.parseObject(result);
    }

    /**
     * 异步校验图片/音频是否含有违法违规内容
     * @param accessToken 接口调用凭证
     * @param mediaUrl 要检测的多媒体url
     * @param mediaType 1:音频;2:图片
     * @return
     */
    public static JSONObject mediaSecCheck(String accessToken, String mediaUrl, Integer mediaType){
        String url = MEDIA_SEC_CHECK_URL.replace("ACCESS_TOKEN", accessToken);
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("media_url",mediaUrl);
        jsonObject.put("media_type",mediaType);
        String result = HttpUtil.post(url,jsonObject.toJSONString());
        return JSONObject.parseObject(result);
    }

    /**
     * 检查一段文本是否含有违法违规内容
     * @param accessToken 接口调用凭证
     * @param content 要检测的文本内容，长度不超过 500KB
     * @return
     */
    public static JSONObject msgSecCheck(String accessToken, String content){
        String url = MSG_SEC_CHECK_URL.replace("ACCESS_TOKEN", accessToken);
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("content",content);
        String result = HttpUtil.post(url,jsonObject.toJSONString());
        return JSONObject.parseObject(result);
    }

}
